/**
 * * 14/05/2010
 * @author Kal�u Caminha
 * @author William Rodrigues
 * @author Rodrigo Coelho
 */
package semantico;

/**
 *
 * @author kaleu
 */
public class Procedimento extends Identificador{
    protected int nivel = -1;    
    protected int numParametros = -1;

    protected int idPrimeiroParametroTS = -1;
    protected int idUltimoParametroTS = -1;

    protected Parametro[] listaPar;
    protected int numListaPar = 0;

    public Procedimento(String nome) {
        super(nome, CAT_PROCEDIMENTO);

        this.setNivel(nivel);	                
    }

    public void insereParametro(Parametro p){        
        this.listaPar[this.numListaPar] = p;
        this.numListaPar++;
    }

    public Parametro[] getListaPar() {
        return listaPar;
    }

    public void setListaPar(Parametro[] listaPar) {
        this.listaPar = listaPar;
    }



    public Procedimento(String nome, int categoria) {
        super(nome, categoria);                
    }

    public int getIdPrimeiroParametroTS() {
        return idPrimeiroParametroTS;
    }

    public void setIdPrimeiroParametroTS(int idPrimeiroParametroTS) {
        this.idPrimeiroParametroTS = idPrimeiroParametroTS;
    }

    public int getIdUltimoParametroTS() {
        return idUltimoParametroTS;
    }

    public void setIdUltimoParametroTS(int idUltimoParametroTS) {
        this.idUltimoParametroTS = idUltimoParametroTS;
    }

    public int getNivel() {
        return nivel;
    }

    public void setNivel(int nivel) {
        this.nivel = nivel;
    }

    public int getNumParametros() {
        return numParametros;
    }

    public void setNumParametros(int numParametros) {
        this.numParametros = numParametros;        
        this.listaPar = new Parametro[numParametros];
    }

	@Override
    public String toString(){
        String s = "";
        s += "Procedimento "+this.getNome()+ " - numParametros: "+this.getNumParametros()+" -  Nível: "+this.getNivel()+" - Param1: "+this.getIdPrimeiroParametroTS()+" - ParamFim: "+this.getIdUltimoParametroTS()+"(";
        for(int i = 0; i < this.numListaPar; i++){
            s+= this.listaPar[i]+", ";

        }
        s+= ")";
        return s;
    }

    @Override
    public TipoVariavel getIdTipo() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

}
